﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Entidades.Sistema;
using Entidades.Sistema.Venta;

namespace Mapping.Sistema.Venta
{
    public static class MappingTipoCliente
    {
        public static List<TipoCliente> ConsultarTipoClientees()
        {
            try
            {
                SqlCommand cmdTipoClientes = new SqlCommand();
                cmdTipoClientes.CommandText = "sp_ConsultarTipoCliente";
                cmdTipoClientes.CommandType = System.Data.CommandType.StoredProcedure;
                Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
                cmdTipoClientes.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
                SqlDataReader drTipoClientes = cmdTipoClientes.ExecuteReader();

                List<TipoCliente> ColTipoClientees = new List<TipoCliente>();

                while (drTipoClientes.Read())
                {
                    TipoCliente oTipoCliente = new TipoCliente();
                    oTipoCliente.IdTipoCliente = Convert.ToInt32(drTipoClientes["Id_TipoCliente"]);
                    oTipoCliente.Nombre = drTipoClientes["Nombre"].ToString();
                    ColTipoClientees.Add(oTipoCliente);
                }

                Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
                return ColTipoClientees;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }

        public static bool AgregarTipoCliente(TipoCliente oTipoCliente)
        {
            SqlCommand cmdTipoCliente = new SqlCommand();
            cmdTipoCliente.CommandText = "sp_AgregarTipoCliente";
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdTipoCliente.CommandType = System.Data.CommandType.StoredProcedure;
            cmdTipoCliente.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdTipoCliente.Parameters.Add("@Id_TipoCliente", System.Data.SqlDbType.Int).Value = oTipoCliente.IdTipoCliente;
            cmdTipoCliente.Parameters.Add("@Nombre", System.Data.SqlDbType.VarChar, 50).Value = oTipoCliente.Nombre;
            cmdTipoCliente.ExecuteNonQuery();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return true;
        }

        public static int ModificarTipoCliente(TipoCliente oTipoCliente)
        {
            SqlCommand cmdTipoCliente = new SqlCommand();
            cmdTipoCliente.CommandText = "sp_ModificarTipoCliente";
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdTipoCliente.CommandType = System.Data.CommandType.StoredProcedure;
            cmdTipoCliente.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdTipoCliente.Parameters.Add("@Id_TipoCliente", System.Data.SqlDbType.Int).Value = oTipoCliente.IdTipoCliente;
            cmdTipoCliente.Parameters.Add("@Nombre", System.Data.SqlDbType.VarChar).Value = oTipoCliente.Nombre;
            int nro = Convert.ToInt32(cmdTipoCliente.ExecuteScalar());
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");

            return nro;
        }

        public static bool EliminarTipoCliente(TipoCliente oTipoCliente)
        {
            SqlCommand cmdEliminarTipoCliente = new SqlCommand();
            cmdEliminarTipoCliente.CommandText = "sp_EliminarTipoCliente";
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdEliminarTipoCliente.CommandType = System.Data.CommandType.StoredProcedure;
            cmdEliminarTipoCliente.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdEliminarTipoCliente.Parameters.Add("@Id_TipoCliente", System.Data.SqlDbType.Int).Value = oTipoCliente.IdTipoCliente;
            cmdEliminarTipoCliente.ExecuteNonQuery();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");

            return true;
        }
    }
}
